1
內部架構:klass 與 super 指標
AI035Lesson 14
00:00

在 C 層級,Ruby 物件是以分離的結構來表示 資料與行為 透過指標層級結構。其中 klass 指標將一個實例連結至其「關聯類別」(方法儲存的位置),而 super 指標則將類別連結至其祖先,形成一種結構圖表,供 Ruby 虛擬機用以解析繼承關係。

1. klass 指標與旗標

每個 Ruby 物件都包含一個標頭,內含一個 klass 指標與一個位元遮罩 旗標。這些旗標可識別物件的內部狀態,例如以 'V' 旗標標記自動建立的「虛擬類別」,以處理單例方法的設定。

2. 解耦狀態(圖 24.1)

lucille 會儲存其獨特的 實例變數,但本身並無方法。其 klass 指標會引導虛擬機至 Guitar 類別物件的方法表格。

lucille@value類別:Guitarplay()strings()V類別:Objectclone()、dup()klasssuper

3. 繼承鏈

lucille.play() 被呼叫時,Ruby 會追隨 klass 指標。若方法在 Guitar中找不到,就會追隨 super 指標至 Object,從此取得對 clonedup的存取權。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>